From: David Härdeman Date: Sun, 30 Nov 2025 18:43:29 +0000 (+0100) Subject: rpcd-mod-luci: report the interface for leases X-Git-Url: http://git.openwrt.org/%22https:/collectd.org/%22http:/www.crowdsec.net//%22https%22/%22https:/collectd.org/%22http:/www.crowdsec.net/%22https%22?a=commitdiff_plain;h=570b4bfe6f0af576cd192dfef098fe5f8eabb1df;p=project%2Fluci.git rpcd-mod-luci: report the interface for leases This adds support to rpcd-mod-luci's ubus interface to report also which interface a given lease corresponds to, which will make it possible to expose that information in LuCI. Signed-off-by: David Härdeman --- diff --git a/libs/rpcd-mod-luci/src/luci.c b/libs/rpcd-mod-luci/src/luci.c index f5527a8a94..2abb5a81ff 100644 --- a/libs/rpcd-mod-luci/src/luci.c +++ b/libs/rpcd-mod-luci/src/luci.c @@ -353,6 +353,7 @@ struct lease_entry { char buf[512]; int32_t expire; struct ether_addr mac; + char *iface; char *hostname; char *duid; char *iaid; @@ -486,8 +487,13 @@ lease_next(void) ea = NULL; if (lease_state.files[lease_state.off].odhcpd) { - strtok(e.buf, " \t\n"); /* # */ - strtok(NULL, " \t\n"); /* iface */ + p = strtok(e.buf, " \t\n"); /* # */ + if (!p || strcmp(p, "#")) + continue; + + e.iface = strtok(NULL, " \t\n"); /* iface */ + if (!e.iface) + continue; e.duid = strtok(NULL, " \t\n"); /* duid or MAC */ if (!e.duid) @@ -1859,6 +1865,9 @@ rpc_luci_get_duid_hints(struct ubus_context *ctx, struct ubus_object *obj, o = blobmsg_open_table(&blob, key); + if (lease->iface) + blobmsg_add_string(&blob, "interface", lease->iface); + blobmsg_add_string(&blob, "duid", lease->duid); if (lease->iaid) @@ -1972,6 +1981,9 @@ rpc_luci_get_dhcp_leases(struct ubus_context *ctx, struct ubus_object *obj, else blobmsg_add_u32(&blob, "expires", lease->expire); + if (lease->iface) + blobmsg_add_string(&blob, "interface", lease->iface); + if (lease->hostname) blobmsg_add_string(&blob, "hostname", lease->hostname);